#include "compiler.hpp"
#include "runner.hpp"
#include "compile_run.hpp"
#include "../comm/httplib.h"
using namespace ns_compiler;
using namespace ns_runner;
using namespace ns_compile_and_run;
using namespace httplib;

// 编译服务随时可能被多个人请求，必须保证传递上来的code，形成源文件的时候，要具有唯一性，要不然多个用户之间会互相影响
void Usage(std::string proc)
{
    std::cerr << "Usage: " << "\n\t" << proc << "port" << std::endl;
}
int main(int argc,char*argv[])
{
    Server svr;
    svr.Post("/compile_and_run",[](const Request &req,Response &resp)
    {
        std::string in_json = req.body;
        std::string out_json;
        if(!in_json.empty())
        {
            CompileAndRun::Start(in_json,&out_json);
            resp.set_content(out_json,"application;charset=utf-8");
        }
    });
    svr.listen("0.0.0.0",atoi(argv[1]));//启动http服务
    return 0;
    // httplib::Server svr;
    // svr.Get("/hi", [](const httplib::Request &req, httplib::Response &rsp)
    //         { rsp.set_content("你好,世界!", "text/plain; charset=utf-8"); });
    // svr.listen("0.0.0.0", 8080);
    // return 0;
    // 下面的工作充当客户端请求的Json串
    //  std::string in_json;
    //  Json::Value in_value;
    //  in_value["code"] = R"(#include<iostream>
    //  int main()
    //  {
    //      std::cout<<"hello I'm hear"<<std::endl;
    //      return 0;
    //  })";
    //  in_value["input"] = "";
    //  in_value["cpu_limit"] = 1;
    //  in_value["mem_limit"] = 10240 * 3;
    //  Json::FastWriter writer;
    //  in_json = writer.write(in_value);
    //  std::cout << in_json << std::endl;
    //  //这个是将来给客户端返回的Json串
    //  std::string out_json;
    //  CompileAndRun::Start(in_json,&out_json);
    //  std::cout<<out_json<<std::endl;
}
